package arithmetic1.sort;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
    冒泡排序
 */
public class BubbleSort {
    public static void main(String[] args) {
//        int arr[]={16,15,1,30,45,23,9};
        //创建一个80000个数的随机数组
        int arr[]=new int[80000];
        for (int i = 0; i < arr.length; i++) {
            arr[i]= (int) (Math.random()*800000);
        }

        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String time1 = sdf.format(date);
        System.out.println("排序前的时间:"+time1);

        bubbleSort(arr);

        date=new Date();
        String time2 = sdf.format(date);
        System.out.println("排序前的时间:"+time2);

//        System.out.println(Arrays.toString(arr));
    }

    public static void bubbleSort(int arr[]){
        for(int i=0;i<arr.length-1;i++){
            //设置一个标记来判断是否提前排好序了。提前排好序了就可以提前结束循环
            boolean flag=true;
            for (int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    //只要当前循环发生过一次交换，就代表没有提前排好序
                    flag=false;
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
            if(flag){   //当前循环并没有发生过交换。代表其实已经排好了序
                break;
            }
        }
    }
}
